1. Field of Invention
The invention relates to methods for managing data, more specifically to increasing the capabilities of error correction codes and to operating memory systems by utilizing indication about the quality of the data.
2. Discussion of Related Art
The continued increases in data storage densities are achieved, among others, by decreasing the sizes of individual memory cells, decreasing the inter-cell separation, and using several signal levels to store more data per cell. Decreasing sizes make the cells more susceptible to external perturbations, decreasing the inter-cell separation can introduce unwanted interference between cells, and multi-level data storage makes it more likely that deviations from the preferred ranges result in misreading of the data. All these negative side effects of increasing storage densities make it more likely that the data will be corrupted.
Traditional ways to reconstruct corrupted data include the application of Error Correction Codes (ECCs). Simple Error Correction Codes store additional parity bits, which capture the parity of the sum of a word's bits, when the data is written into the memory system. If during storage the data is corrupted, the parity of the sum of bits may change. Upon reading the data from the memory system, the parity of the sum of the word's bits is computed once again by the ECC. Because of the data corruption the computed parity may not match the content of the parity bits, and the ECC may detect the corruption.
There are more sophisticated error correction codes in use today. But the basic concept remains: ECCs compute some summary information of the data upon writing the data into the memory system. This summary information is then stored in additional bits. During the readout the summary information is computed once again by the ECC, and the result is compared with the result, stored in the additional bits. If the two do not agree, the data has been corrupted during storage or the operation of the memory system.
ECCs can have at least two functions: error detection and error correction. The latter function is typically harder. An early example is the (7,4) Hamming code, which has the capability of detecting 2 errors per word, but it can correct the words only if they contain a single error.
More sophisticated ECCs today can correct more than a single error per word. But beyond 2 or 3 random errors per word even for sophisticated ECCs it becomes computationally increasingly complex to reconstruct the data. Common practice is to recover the data with some acceptably small probability of incorrect recovery. However with increasing number of errors the probability of reliable data recovery also decreases rapidly, or the associated costs in additional hardware and/or performance become prohibitively high.
Therefore auxiliary methods which increase the capability of the Error Correction Codes in today's memory systems are desired.
Some auxiliary methods have been described in detail in U.S. Pat. Nos. 5,657,332 and 6,049,899, both granted to D. Auclair et al., which are hereby incorporated by reference in their entirety. These patents developed the concept of soft error handling.
In semiconductor memory devices, including EEPROM systems, data can be represented by the voltages of particular gates. Typically, different digital data storage values are represented by well-separated voltage levels. If, for some reason, during the read operation the voltage levels shift from their preferred ranges by an amount comparable to the level separation, errors may be detected by the ECC.
Many errors develop gradually. Memory cell voltages can drift away from the preferred ranges for a number of reasons. These include external perturbations, for example, variations in the operating conditions, as well as internal influences, such as interference during writing into neighboring memory cells. The above inventions describe methods for regular monitoring of the data of the memory cell array even before the voltage shifts result in an actual ECC-detected error. After the monitoring operations found voltages having started shifting from the preferred voltage ranges, different corrective actions can be executed. A possible corrective action is “scrubbing” the array. Scrubbing can include rewriting the complete sector of the erroneous memory cell into a different sector of the array.
Recently the density of data storage has been further increased by implementing multi-level storage schemes, in which single memory cells store not only binary “0”s and “1”s, but several more levels. The number of the levels is often chosen to be 4, 8, or 16. Such multi-level memory systems have been described in U.S. Pat. No. 6,222,762 B1, granted to D. Guterman et al, and U.S. Pat. No. 6,275,419 B1, granted to D. Guterman et al., which are hereby incorporated by reference in their entirety. In such multi-level systems 4, 8, or 16 voltage levels can be distinguished within the same overall voltage range. Correspondingly the separation of voltage levels decreases and increasingly smaller voltage shifts can lead to errors.
Therefore auxiliary methods which increase the capability of the Error Correction Codes to detect and reconstruct corrupted data in high-density arrays of multi-level memory cells are desired.